//package com.lxf.clouduser.netty;
//
//import com.alibaba.nacos.shaded.com.google.gson.Gson;
//import com.lxf.clouduser.bean.ReqModel;
//import com.lxf.clouduser.bean.RespModel;
//import com.lxf.clouduser.service.ChatService;
//import io.netty.buffer.Unpooled;
//import io.netty.channel.Channel;
//import io.netty.channel.ChannelHandlerContext;
//import io.netty.channel.ChannelInboundHandlerAdapter;
//import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
//import io.netty.handler.timeout.IdleStateEvent;
//import io.netty.util.CharsetUtil;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Component;
//
//import javax.annotation.Resource;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//import java.util.Set;
//import java.util.stream.Collectors;
//
///**
// * @author 罗兴发
// * @data 2025/7/17 16:23
// * @description：netty心跳检测
// */
//@Component
//@Slf4j
//public class HeartbeatHandler extends ChannelInboundHandlerAdapter {
//    @Override
//    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
//
//        if (evt instanceof IdleStateEvent) {
//            IdleStateEvent event = (IdleStateEvent) evt;
//            switch (event.state()) {
//                case READER_IDLE: // 读空闲事件，例如发送心跳包或关闭连接等操作
//                    ctx.close();
//                    break;
//                case WRITER_IDLE: //写空闲，不作操作
//                    //发送心跳消息
//                    RespModel respModel = new RespModel();
//                    respModel.setMsg("心跳检测");
//                    respModel.setType(1);
//                    TextWebSocketFrame resp = new TextWebSocketFrame(new Gson().toJson(respModel));
//                    ctx.writeAndFlush(resp); // 发送心跳消息给客户端
//                    break;
//                case ALL_IDLE: //所有空闲，不作操作
//                    break;
//                default: break; // 其他情况不做处理或按需处理其他类型的事件。
//            }
//        } else {
//            super.userEventTriggered(ctx, evt); // 对于非IdleStateEvent的事件，调用父类的方法。
//        }
//    }
//
//    @Override
//    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
//        System.out.println(msg);
//    }
//}
